import Schema from 'validate'
const mobileValidate = new Schema({
  mobile: {
    type: String, // 数字类型 
    required: true, // 必填
    match: /^1[3-9]\d{9}$/, // 正则
    message: '手机号码不合法' // 提示信息
  }
})

const codeValidate = new Schema({
  code: {
    type: String, // 数字类型 
    required: true, // 必填
    match: /^\d{6}$/, // 正则
    message: '验证码不合法' // 提示信息
  }
})

Page({
  data: {
    countDownVisible: false, //倒计时是否显示
    mobile: '18476619401', //手机号码
    code: '',
  },
  // 倒计时数字每次变化触发
  countDownChange(ev) {
    // console.log(ev.detail);
    this.setData({
      timeData: ev.detail, //倒计时的时间
      countDownVisible: ev.detail.minutes === 1 || ev.detail.seconds > 0, //倒计时结束隐藏
    })
  },
  onLoad({
    redirector
  }) {
    // 赋值为页面实例全局变量
    this.redirector = redirector;
  },
  // 点击获取验证码
  async onGetcode() {
    // 获取到手机号
    const mobile = this.data.mobile;
    // 开始验证 如果验证不通过 errs.length 不等于 0 
    const errs = mobileValidate.validate({
      mobile
    });
    // 验证失败提示并停止发送请求
    if (errs.length !== 0) {
      return wx.utils.toast(errs[0].message)
    }
    // 倒计时显示
    this.setData({
      countDownVisible: true
    })
    // 发送请求获取验证码
    const res = await wx.http({
      url: '/code',
      data: {
        mobile
      }
    })
    console.log(res);
  },
  // 点击登录
  async onLogin() {
    // 读取手机和验证码
    const {
      mobile,
      code
    } = this.data
    // 验证手机号
    const errs = mobileValidate.validate({
      mobile
    });
    // 验证失败提示并停止发送请求
    if (mobile.length === 0) {
      return wx.utils.toast('请输入手机号')
    } else if (errs.length !== 0) {
      return wx.utils.toast(errs[0].message)
    }
    // 验证码校验
    const codeErrs = codeValidate.validate({
      code
    });
    // 验证失败提示并停止发送请求
    if (code.length === 0) {
      return wx.utils.toast('请输入验证码')
    } else if (codeErrs.length !== 0) {
      return wx.utils.toast(codeErrs[0].message)
    }

    // 发送登录请求
    const res = await wx.http({
      url: '/login',
      method: 'post',
      data: {
        mobile,
        code
      }
    })
    console.log(res);
    // 验证码错误提示
    if (res.code !== 10000) {
      return wx.utils.toast(res.message)
    }
    // 获取app实例并调用函数记录token
    const app = getApp();
    app.settoken(res.data.token, res.data.refreshToken)
    // 登录完毕，跳转回去
    if (this.redirector) {
      // 有来源路径就返回
      wx.reLaunch({
        url: '/' + this.redirector,
      })
    } else {
      // 没有来源路径就回首页
      wx.switchTab({
        url: '/pages/index/index',
      })
    }
  },

})